home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Bank smakow / BankSmakow.air / BankSmakow.swf / scripts / mx / controls / alertClasses / AlertForm.as
Text File  |  2009-12-16  |  12KB  |  363 lines

  1. package mx.controls.alertClasses
  2. {
  3.    import flash.display.DisplayObject;
  4.    import flash.events.KeyboardEvent;
  5.    import flash.events.MouseEvent;
  6.    import flash.text.TextLineMetrics;
  7.    import flash.ui.Keyboard;
  8.    import mx.controls.Alert;
  9.    import mx.controls.Button;
  10.    import mx.core.IFlexModuleFactory;
  11.    import mx.core.IFontContextComponent;
  12.    import mx.core.IUITextField;
  13.    import mx.core.UIComponent;
  14.    import mx.core.UITextField;
  15.    import mx.core.mx_internal;
  16.    import mx.events.CloseEvent;
  17.    import mx.managers.IFocusManagerContainer;
  18.    import mx.managers.ISystemManager;
  19.    import mx.managers.PopUpManager;
  20.    
  21.    use namespace mx_internal;
  22.    
  23.    public class AlertForm extends UIComponent implements IFontContextComponent
  24.    {
  25.       
  26.       mx_internal static const VERSION:String = "3.5.0.12683";
  27.        
  28.       
  29.       mx_internal var buttons:Array;
  30.       
  31.       private var icon:DisplayObject;
  32.       
  33.       mx_internal var textField:IUITextField;
  34.       
  35.       mx_internal var defaultButton:Button;
  36.       
  37.       private var textWidth:Number;
  38.       
  39.       private var defaultButtonChanged:Boolean = false;
  40.       
  41.       private var textHeight:Number;
  42.       
  43.       public function AlertForm()
  44.       {
  45.          buttons = [];
  46.          super();
  47.          tabChildren = true;
  48.       }
  49.       
  50.       override public function styleChanged(param1:String) : void
  51.       {
  52.          var _loc2_:String = null;
  53.          var _loc3_:int = 0;
  54.          var _loc4_:int = 0;
  55.          super.styleChanged(param1);
  56.          if(!param1 || param1 == "styleName" || param1 == "buttonStyleName")
  57.          {
  58.             if(mx_internal::buttons)
  59.             {
  60.                _loc2_ = getStyle("buttonStyleName");
  61.                _loc3_ = mx_internal::buttons.length;
  62.                _loc4_ = 0;
  63.                while(_loc4_ < _loc3_)
  64.                {
  65.                   mx_internal::buttons[_loc4_].styleName = _loc2_;
  66.                   _loc4_++;
  67.                }
  68.             }
  69.          }
  70.       }
  71.       
  72.       public function set fontContext(param1:IFlexModuleFactory) : void
  73.       {
  74.          this.moduleFactory = param1;
  75.       }
  76.       
  77.       override protected function commitProperties() : void
  78.       {
  79.          var _loc1_:int = 0;
  80.          var _loc2_:ISystemManager = null;
  81.          super.commitProperties();
  82.          if(hasFontContextChanged() && mx_internal::textField != null)
  83.          {
  84.             _loc1_ = getChildIndex(DisplayObject(mx_internal::textField));
  85.             removeTextField();
  86.             createTextField(_loc1_);
  87.          }
  88.          if(defaultButtonChanged && mx_internal::defaultButton)
  89.          {
  90.             defaultButtonChanged = false;
  91.             Alert(parent).defaultButton = mx_internal::defaultButton;
  92.             if(parent is IFocusManagerContainer)
  93.             {
  94.                _loc2_ = Alert(parent).systemManager;
  95.                _loc2_.activate(IFocusManagerContainer(parent));
  96.             }
  97.             mx_internal::defaultButton.setFocus();
  98.          }
  99.       }
  100.       
  101.       private function createButton(param1:String, param2:String) : Button
  102.       {
  103.          var _loc3_:Button = new Button();
  104.          _loc3_.label = param1;
  105.          _loc3_.name = param2;
  106.          var _loc4_:String;
  107.          if(_loc4_ = getStyle("buttonStyleName"))
  108.          {
  109.             _loc3_.styleName = _loc4_;
  110.          }
  111.          _loc3_.addEventListener(MouseEvent.CLICK,clickHandler);
  112.          _loc3_.addEventListener(KeyboardEvent.KEY_DOWN,keyDownHandler);
  113.          _loc3_.owner = parent;
  114.          addChild(_loc3_);
  115.          _loc3_.setActualSize(Alert.buttonWidth,Alert.buttonHeight);
  116.          mx_internal::buttons.push(_loc3_);
  117.          return _loc3_;
  118.       }
  119.       
  120.       override protected function resourcesChanged() : void
  121.       {
  122.          var _loc1_:Button = null;
  123.          super.resourcesChanged();
  124.          _loc1_ = Button(getChildByName("OK"));
  125.          if(_loc1_)
  126.          {
  127.             _loc1_.label = String(Alert.okLabel);
  128.          }
  129.          _loc1_ = Button(getChildByName("CANCEL"));
  130.          if(_loc1_)
  131.          {
  132.             _loc1_.label = String(Alert.cancelLabel);
  133.          }
  134.          _loc1_ = Button(getChildByName("YES"));
  135.          if(_loc1_)
  136.          {
  137.             _loc1_.label = String(Alert.yesLabel);
  138.          }
  139.          _loc1_ = Button(getChildByName("NO"));
  140.          if(_loc1_)
  141.          {
  142.             _loc1_.label = String(Alert.noLabel);
  143.          }
  144.       }
  145.       
  146.       override protected function createChildren() : void
  147.       {
  148.          var _loc5_:String = null;
  149.          var _loc6_:Button = null;
  150.          super.createChildren();
  151.          createTextField(-1);
  152.          var _loc1_:Class = Alert(parent).iconClass;
  153.          if(_loc1_ && !icon)
  154.          {
  155.             icon = new _loc1_();
  156.             addChild(icon);
  157.          }
  158.          var _loc2_:Alert = Alert(parent);
  159.          var _loc3_:uint = _loc2_.buttonFlags;
  160.          var _loc4_:uint = _loc2_.defaultButtonFlag;
  161.          if(_loc3_ & Alert.OK)
  162.          {
  163.             _loc5_ = String(Alert.okLabel);
  164.             _loc6_ = createButton(_loc5_,"OK");
  165.             if(_loc4_ == Alert.OK)
  166.             {
  167.                defaultButton = _loc6_;
  168.             }
  169.          }
  170.          if(_loc3_ & Alert.YES)
  171.          {
  172.             _loc5_ = String(Alert.yesLabel);
  173.             _loc6_ = createButton(_loc5_,"YES");
  174.             if(_loc4_ == Alert.YES)
  175.             {
  176.                defaultButton = _loc6_;
  177.             }
  178.          }
  179.          if(_loc3_ & Alert.NO)
  180.          {
  181.             _loc5_ = String(Alert.noLabel);
  182.             _loc6_ = createButton(_loc5_,"NO");
  183.             if(_loc4_ == Alert.NO)
  184.             {
  185.                defaultButton = _loc6_;
  186.             }
  187.          }
  188.          if(_loc3_ & Alert.CANCEL)
  189.          {
  190.             _loc5_ = String(Alert.cancelLabel);
  191.             _loc6_ = createButton(_loc5_,"CANCEL");
  192.             if(_loc4_ == Alert.CANCEL)
  193.             {
  194.                defaultButton = _loc6_;
  195.             }
  196.          }
  197.          if(!mx_internal::defaultButton && mx_internal::buttons.length)
  198.          {
  199.             defaultButton = mx_internal::buttons[0];
  200.          }
  201.          if(mx_internal::defaultButton)
  202.          {
  203.             defaultButtonChanged = true;
  204.             invalidateProperties();
  205.          }
  206.       }
  207.       
  208.       override protected function measure() : void
  209.       {
  210.          super.measure();
  211.          var _loc1_:String = Alert(parent).title;
  212.          var _loc2_:TextLineMetrics = Alert(parent).getTitleTextField().getUITextFormat().measureText(_loc1_);
  213.          var _loc3_:int = Math.max(mx_internal::buttons.length,2);
  214.          var _loc4_:Number = _loc3_ * mx_internal::buttons[0].width + (_loc3_ - 1) * 8;
  215.          var _loc5_:Number = Math.max(_loc4_,_loc2_.width);
  216.          mx_internal::textField.width = 2 * _loc5_;
  217.          textWidth = mx_internal::textField.textWidth + UITextField.TEXT_WIDTH_PADDING;
  218.          var _loc6_:Number = Math.max(_loc5_,textWidth);
  219.          _loc6_ = Math.min(_loc6_,2 * _loc5_);
  220.          if(textWidth < _loc6_ && mx_internal::textField.multiline == true)
  221.          {
  222.             mx_internal::textField.multiline = false;
  223.             mx_internal::textField.wordWrap = false;
  224.          }
  225.          else if(mx_internal::textField.multiline == false)
  226.          {
  227.             mx_internal::textField.wordWrap = true;
  228.             mx_internal::textField.multiline = true;
  229.          }
  230.          _loc6_ += 16;
  231.          if(icon)
  232.          {
  233.             _loc6_ += icon.width + 8;
  234.          }
  235.          textHeight = mx_internal::textField.textHeight + UITextField.TEXT_HEIGHT_PADDING;
  236.          var _loc7_:Number = textHeight;
  237.          if(icon)
  238.          {
  239.             _loc7_ = Math.max(_loc7_,icon.height);
  240.          }
  241.          _loc7_ = (_loc7_ = Math.min(_loc7_,screen.height * 0.75)) + (mx_internal::buttons[0].height + 3 * 8);
  242.          measuredWidth = _loc6_;
  243.          measuredHeight = _loc7_;
  244.       }
  245.       
  246.       public function get fontContext() : IFlexModuleFactory
  247.       {
  248.          return moduleFactory;
  249.       }
  250.       
  251.       private function clickHandler(param1:MouseEvent) : void
  252.       {
  253.          var _loc2_:String = Button(param1.currentTarget).name;
  254.          removeAlert(_loc2_);
  255.       }
  256.       
  257.       mx_internal function removeTextField() : void
  258.       {
  259.          if(mx_internal::textField)
  260.          {
  261.             removeChild(DisplayObject(mx_internal::textField));
  262.             textField = null;
  263.          }
  264.       }
  265.       
  266.       override protected function keyDownHandler(param1:KeyboardEvent) : void
  267.       {
  268.          var _loc2_:uint = Alert(parent).buttonFlags;
  269.          if(param1.keyCode == Keyboard.ESCAPE)
  270.          {
  271.             if(_loc2_ & Alert.CANCEL || !(_loc2_ & Alert.NO))
  272.             {
  273.                removeAlert("CANCEL");
  274.             }
  275.             else if(_loc2_ & Alert.NO)
  276.             {
  277.                removeAlert("NO");
  278.             }
  279.          }
  280.       }
  281.       
  282.       mx_internal function createTextField(param1:int) : void
  283.       {
  284.          if(!mx_internal::textField)
  285.          {
  286.             textField = IUITextField(createInFontContext(UITextField));
  287.             mx_internal::textField.styleName = this;
  288.             mx_internal::textField.text = Alert(parent).text;
  289.             mx_internal::textField.multiline = true;
  290.             mx_internal::textField.wordWrap = true;
  291.             mx_internal::textField.selectable = true;
  292.             if(param1 == -1)
  293.             {
  294.                addChild(DisplayObject(mx_internal::textField));
  295.             }
  296.             else
  297.             {
  298.                addChildAt(DisplayObject(mx_internal::textField),param1);
  299.             }
  300.          }
  301.       }
  302.       
  303.       override protected function updateDisplayList(param1:Number, param2:Number) : void
  304.       {
  305.          var _loc3_:Number = NaN;
  306.          var _loc4_:Number = NaN;
  307.          var _loc5_:Number = NaN;
  308.          super.updateDisplayList(param1,param2);
  309.          _loc4_ = param2 - mx_internal::buttons[0].height;
  310.          _loc5_ = mx_internal::buttons.length * (mx_internal::buttons[0].width + 8) - 8;
  311.          _loc3_ = (param1 - _loc5_) / 2;
  312.          var _loc6_:int = 0;
  313.          while(_loc6_ < mx_internal::buttons.length)
  314.          {
  315.             mx_internal::buttons[_loc6_].move(_loc3_,_loc4_);
  316.             mx_internal::buttons[_loc6_].tabIndex = _loc6_ + 1;
  317.             _loc3_ += mx_internal::buttons[_loc6_].width + 8;
  318.             _loc6_++;
  319.          }
  320.          _loc5_ = textWidth;
  321.          if(icon)
  322.          {
  323.             _loc5_ += icon.width + 8;
  324.          }
  325.          _loc3_ = (param1 - _loc5_) / 2;
  326.          if(icon)
  327.          {
  328.             icon.x = _loc3_;
  329.             icon.y = (_loc4_ - icon.height) / 2;
  330.             _loc3_ += icon.width + 8;
  331.          }
  332.          var _loc7_:Number = mx_internal::textField.getExplicitOrMeasuredHeight();
  333.          mx_internal::textField.move(_loc3_,(_loc4_ - _loc7_) / 2);
  334.          mx_internal::textField.setActualSize(textWidth + 5,_loc7_);
  335.       }
  336.       
  337.       private function removeAlert(param1:String) : void
  338.       {
  339.          var _loc2_:Alert = Alert(parent);
  340.          _loc2_.visible = false;
  341.          var _loc3_:CloseEvent = new CloseEvent(CloseEvent.CLOSE);
  342.          if(param1 == "YES")
  343.          {
  344.             _loc3_.detail = Alert.YES;
  345.          }
  346.          else if(param1 == "NO")
  347.          {
  348.             _loc3_.detail = Alert.NO;
  349.          }
  350.          else if(param1 == "OK")
  351.          {
  352.             _loc3_.detail = Alert.OK;
  353.          }
  354.          else if(param1 == "CANCEL")
  355.          {
  356.             _loc3_.detail = Alert.CANCEL;
  357.          }
  358.          _loc2_.dispatchEvent(_loc3_);
  359.          PopUpManager.removePopUp(_loc2_);
  360.       }
  361.    }
  362. }
  363.